1. Field of the Invention
This invention relates generally to a system and method for reconfiguring inter-processor communications and, more particularly, to a system and method that provides multiple processors that include a send and receive buffer, a send and receive table, and infrastructure software services that include protocols for sending and receiving messages between the processors in a controller.
2. Discussion of the Related Art
Modern vehicles employ various embedded electronic controllers that improve the performance, comfort, safety, etc. of the vehicle. Such controllers include engine controllers, suspension controllers, steering controllers, power train controllers, climate control controllers, infotainment system controllers, chassis system controllers, etc. These controllers typically require special purpose software and algorithms to perform their control functions.
The current trend for vehicle electronic controllers is to provide multiple software applications for different functions operating on a common controller. For example, adaptive cruise control (ACC) systems, lane centering systems, lane keeping systems, stability control systems, etc. are all known in the art all of which automatically control vehicle steering and/or braking in some fashion. These systems often times employ the same sensor inputs and other variables, sometimes referred to as global variables, that when stored in memory can be used by more than one software application. For example, the ACC system may write sensor data into the controller memory during its operation on the processor, and the lane centering system may write that data into its software when it is running on the processor. Thus, it makes sense in many cases such as these to run multiple software applications on the same processor.
Providing multiple related software applications running on a common controller has obvious advantages for reducing system hardware and cost. However, operating different software applications on the same processor increases the complexity of the controller because of the scheduling required to run the different software applications and prevent the software applications from interfering with each other. Such mixed use applications operating on a single processor is further increased in complexity when a vehicle OEM provides additional software on a controller already having software provided by a supplier. Furthermore, a single processor has only limited resources such as memory, CPU throughput, etc., available. The resources needed to run multiple applications often exceed the capability of a single processor.
Inter-processor communication (IPC) is a set of methods for exchanging data among multiple threads in one or more processes. The one or more processes or runnables may be running on one or more processors connected by a network. As used herein “runnable” includes a small executable software component or software function running at a certain operating system task rate. In inter-processor communications, runnables may be assigned to different processors. Runnables may also run in different threads with different rates. Assignment of runnables requires frequent change which can be burdensome with respect to throughput of cores/processors as well as with respect to bandwidth of a bus/memory. Current practice assumes that runnables may not be reassigned during design becomes infeasible. Messages in known controller implementations include node-specific syntax, i.e., hard coded source/target information. Moving runnables from one core to another requires nontrivial effort to identify and modify IPC messages. Thus, there is a need in the art for mechanisms that allow reconfiguration of inter-processor communication according to various function deployment, function execution rates, and low level communication links.